package com.yuanzhi.train.tree;

/**
 * 给你一棵二叉树的根节点 root ，翻转这棵二叉树，并返回其根节点。
 *
 * 示例 1： 输入：root = [4,2,7,1,3,6,9] 输出：[4,7,2,9,6,3,1]
 *
 * 示例 2： 输入：root = [2,1,3] 输出：[2,3,1]
 *
 * 示例 3： 输入：root = [] 输出：[]  
 *
 * 提示： 树中节点数目范围在 [0, 100] 内 -100 <= Node.val <= 100
 *
 * 来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/invert-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * 
 * @author yuanZhi
 * @since 2022/2/14 16:14
 */
public class InvertTree {
	public static void main(String[] args) {
		TreeNode root = new TreeNode(2, new TreeNode(1), new TreeNode(3));
		TreeNode invertTree = invertTree(root);
		System.out.println(invertTree);
	}

	private static TreeNode invertTree(TreeNode root) {
		if (root == null) {
			return null;
		}
		TreeNode left = root.left;
		root.left = root.right;
		root.right = left;

		invertTree(root.left);
		invertTree(root.right);
		return root;
	}
}
